export {};

/*
 泛型接口
   需求：
      一般后台返回的数据 res 中，result 是数组或者null，数组每一项是一个固定的结构对象，
      {id:1,name:"吃饭",done:false}
      封装符合的 Res 泛型接口

    1. 封装 Res 结构，留下泛型位置
    2. 封装 Todo 的对象结构
    3. 绑定时候，把类型一并传递过来

    建议：学习时候多敲，实际开发中，可以使用vscode代码提示，完成 Res 和 Todo 的接口封装
*/

interface Res<T> {
  msg: string;
  code: number;
  result: T;
}

interface Todo {
  id: number;
  name: string;
  done: boolean;
}

const res: Res<Todo[]> = {
  msg: "成功",
  code: 200,
  result: [
    { id: 1, name: "吃饭", done: true },
    { id: 2, name: "睡觉", done: false },
  ],
};
// res.result.push(1);
res.result.push({
  id: 3,
  name: "敲代码",
  done: false,
});

const res1: Res<null> = {
  msg: "成功",
  code: 200,
  result: null,
};
